home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / gtkblist.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  7KB  |  248 lines

  1. /**
  2.  * @file gtkblist.h GTK+ Buddy List API
  3.  * @ingroup gtkui
  4.  *
  5.  * gaim
  6.  *
  7.  * Gaim is the legal property of its developers, whose names are too numerous
  8.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  9.  * source distribution.
  10.  *
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or
  14.  * (at your option) any later version.
  15.  *
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  *
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  */
  25. #ifndef _GAIM_GTKBLIST_H_
  26. #define _GAIM_GTKBLIST_H_
  27.  
  28. #include "gtkgaim.h"
  29. #include "blist.h"
  30.  
  31. enum {
  32.     STATUS_ICON_COLUMN,
  33.     STATUS_ICON_VISIBLE_COLUMN,
  34.     NAME_COLUMN,
  35.     WARNING_COLUMN,
  36.     IDLE_COLUMN,
  37.     BUDDY_ICON_COLUMN,
  38.     NODE_COLUMN,
  39.     BLIST_COLUMNS
  40.     };
  41.  
  42. typedef enum {
  43.     GAIM_STATUS_ICON_LARGE,
  44.     GAIM_STATUS_ICON_SMALL
  45.  
  46. } GaimStatusIconSize;
  47.  
  48. /**************************************************************************
  49.  * @name Structures
  50.  **************************************************************************/
  51. /**
  52.  * Like, everything you need to know about the gtk buddy list
  53.  */
  54. typedef struct {
  55.     GtkWidget *window;
  56.     GtkWidget *vbox;                /**< This is the vbox that everything gets packed into.  Your plugin might
  57.                        want to pack something in it itself.  Go, plugins! */
  58.  
  59.     GtkWidget *treeview;            /**< It's a treeview... d'uh. */
  60.     GtkTreeStore *treemodel;        /**< This is the treemodel.  */
  61.     GtkTreeViewColumn *idle_column,
  62.         *warning_column,
  63.         *buddy_icon_column;
  64.  
  65.     GtkItemFactory *ift;
  66.     GtkWidget *bpmenu;              /**< The buddy pounce menu. */
  67.  
  68.     GtkWidget *bbox;                /**< A Button Box. */
  69.     GtkTooltips *tooltips;           /**< Tooltips for the buttons. */
  70.  
  71.     guint refresh_timer;            /**< The timer for refreshing every 30 seconds */
  72.  
  73.     guint      timeout;              /**< The timeout for the tooltip. */
  74.     GdkRectangle tip_rect;           /**< This is the bounding rectangle of the
  75.                           cell we're currently hovering over.  This is
  76.                           used for tooltips. */
  77.     GdkRectangle contact_rect;       /**< This is the bounding rectangle of the contact node
  78.                           and its children.  This is used for auto-expand on
  79.                           mouseover. */
  80.     GaimBlistNode *mouseover_contact; /**< This is the contact currently mouse-over expanded */
  81.  
  82.     GtkWidget *tipwindow;            /**< The window used by the tooltip */
  83.  
  84.     GaimBlistNode *selected_node;   /**< The currently selected node */
  85.  
  86.     GdkPixbuf *east, *south;                 /**< Drop shadow stuff */
  87.     GdkWindow *east_shadow, *south_shadow;   /**< Drop shadow stuff */
  88.  
  89. } GaimGtkBuddyList;
  90.  
  91. #define GAIM_GTK_BLIST(list) ((GaimGtkBuddyList *)(list)->ui_data)
  92. #define GAIM_IS_GTK_BLIST(list) \
  93.     ((list)->ui_ops == gaim_gtk_blist_get_ui_ops())
  94.  
  95. /**************************************************************************
  96.  * @name GTK+ Buddy List API
  97.  **************************************************************************/
  98.  
  99. /**
  100.  * Get the handle for the GTK+ blist system.
  101.  *
  102.  * @return the handle to the blist system
  103.  */
  104. void *gaim_gtk_blist_get_handle();
  105.  
  106. /**
  107.  * Initializes the GTK+ blist system.
  108.  */
  109. void gaim_gtk_blist_init(void);
  110.  
  111. /**
  112.  * Uninitializes the GTK+ blist system.
  113.  */
  114. void gaim_gtk_blist_uninit(void);
  115.  
  116. /**
  117.  * Returns the UI operations structure for the buddy list.
  118.  *
  119.  * @return The GTK list operations structure.
  120.  */
  121. GaimBlistUiOps *gaim_gtk_blist_get_ui_ops(void);
  122.  
  123. /**
  124.  * Returns the base image to represent the account, based on the currently selected theme
  125.  *
  126.  * @param account  The account.
  127.  *
  128.  * @return         The icon
  129.  */
  130. GdkPixbuf *create_prpl_icon(GaimAccount *account);
  131.  
  132. /**
  133.  * Populates a menu with the items shown on the buddy list for a buddy.
  134.  *
  135.  * @param menu  The menu to populate
  136.  * @param buddy The buddy who's menu to get
  137.  */
  138. void gaim_gtk_blist_make_buddy_menu(GtkWidget *menu, GaimBuddy *buddy);
  139.  
  140. /**
  141.  * Refreshes all the nodes of the buddy list.
  142.  * This should only be called when something changes to affect most of the nodes (such as a ui preference changing)
  143.  *
  144.  * @param list   This is the core list that gets updated from
  145.  */
  146. void gaim_gtk_blist_refresh(GaimBuddyList *list);
  147.  
  148. /**
  149.  * Tells the buddy list to update its toolbar based on the preferences
  150.  *
  151.  */
  152. void gaim_gtk_blist_update_toolbar();
  153.  
  154. /**
  155.  * Useful for the docklet plugin and also for the win32 tray icon
  156.  * This is called when one of those is clicked--it will show/hide the
  157.  * buddy list/login window--depending on which is active
  158.  */
  159. void gaim_gtk_blist_docklet_toggle();
  160. void gaim_gtk_blist_docklet_add();
  161. void gaim_gtk_blist_docklet_remove();
  162. void gaim_gtk_blist_update_columns();
  163. void gaim_gtk_blist_update_refresh_timeout();
  164.  
  165. /**
  166.  * Useful for the buddy ticker
  167.  */
  168. GdkPixbuf *gaim_gtk_blist_get_status_icon(GaimBlistNode *node,
  169.         GaimStatusIconSize size);
  170.  
  171. /**************************************************************************
  172.  * @name GTK+ Buddy List sorting functions
  173.  **************************************************************************/
  174.  
  175. typedef GtkTreeIter (*gaim_gtk_blist_sort_function)(GaimBlistNode *new, GaimBuddyList *blist, GtkTreeIter group, GtkTreeIter *cur);
  176.  
  177. extern GSList *gaim_gtk_blist_sort_methods;
  178.  
  179. struct gaim_gtk_blist_sort_method {
  180.     char *id;
  181.     char *name;
  182.     gaim_gtk_blist_sort_function func;
  183. };
  184.  
  185. /**
  186.  * Registers a buddy list sorting method.
  187.  *
  188.  * @param id   The unique ID of the sorting method
  189.  * @param name The method's name.
  190.  * @param func  A pointer to the function.
  191.  *
  192.  */
  193. void gaim_gtk_blist_sort_method_reg(const char *id, const char *name, gaim_gtk_blist_sort_function func);
  194.  
  195. /**
  196.  * Unregisters a buddy list sorting method.
  197.  *
  198.  * @param id The method's id
  199.  */
  200. void gaim_gtk_blist_sort_method_unreg(const char *id);
  201.  
  202. /**
  203.  * Sets a buddy list sorting method.
  204.  *
  205.  * @param id The method's id.
  206.  */
  207. void gaim_gtk_blist_sort_method_set(const char *id);
  208.  
  209. /**
  210.  * Sets up the programs default sort methods
  211.  */
  212. void gaim_gtk_blist_setup_sort_methods();
  213.  
  214. /**
  215.  * Updates the protocol actions menu on the GTK+ buddy list window.
  216.  */
  217. void gaim_gtk_blist_update_protocol_actions();
  218.  
  219. /**
  220.  * Updates the plugin actions menu on the GTK+ buddy list window.
  221.  */
  222. void gaim_gtk_blist_update_plugin_actions();
  223.  
  224. /**
  225.  * Determines if showing the join chat dialog is a valid action.
  226.  *
  227.  * @return Returns TRUE if there are accounts online capable of
  228.  *         joining chat rooms.  Otherwise returns FALSE.
  229.  */
  230. gboolean gaim_gtk_blist_joinchat_is_showable(void);
  231.  
  232. /**
  233.  * Shows the join chat dialog.
  234.  */
  235. void gaim_gtk_blist_joinchat_show(void);
  236.  
  237. /**
  238.  * Appends the protocol specific menu items for a GaimBlistNode
  239.  */
  240. void gaim_gtk_append_blist_node_proto_menu (GtkWidget *menu, GaimConnection *gc, GaimBlistNode *node);
  241.  
  242. /**
  243.  * Appends the extended menu items for a GaimBlistNode
  244.  */
  245. void gaim_gtk_append_blist_node_extended_menu(GtkWidget *menu, GaimBlistNode *node);
  246.  
  247. #endif /* _GAIM_GTKBLIST_H_ */
  248.